/**
 * Класс для подсчета статистики по URL для вывода на странице опций
 */
export default class UrlsStatistics {
    /** @type {URL} */
    list

    constructor() {
        this.list = new Array()
    }

    /**
     * Создать экземпляр класса из аналогичного по структуре объекта
     * @param {URL} url элемент для добавления
     */
    addElement(url) {
        this.list.push(url)
    }

    clear() {
        this.list = new Array()
    }

    /**
    * Получить статистику по отправке запросов к url и pathname
    * @returns объект со статистикой
    */
    getStatistics() {
        let result = new Object()
        for (let i = 0; i < this.list.length; i++) {
            let url = this.list[i]
            let workList = new Array()
            if (result[url.origin] !== undefined) {
                let isFindElem = false
                workList = result[url.origin]
                for (let k = 0; k < workList.length; k++) {
                    let elem = workList[k]
                    if (elem['url'] === url.pathname) {
                        let currentCount = elem['count']
                        elem['count'] = currentCount + 1
                        isFindElem = true
                        break
                    }
                }

                if (isFindElem === false) {
                    let newElem = new Object()
                    newElem['url'] = url.pathname
                    newElem['count'] = 1
                    workList.push(newElem)
                }
            } else {
                let newElem = new Object()
                newElem['url'] = url.pathname
                newElem['count'] = 1
                workList.push(newElem)
            }
            result[url.origin] = workList
        }

        return result
    }
}